/**
 * @param {number[]} height
 * @return {number}
 */
var maxArea = function (height = []) {
  let len = height.length;
  let max = 0;
  for (let i = 0, j = len - 1; i < j;) {
    let minheight = height[i] < height[j] ? height[i++] : height[j--];
    let area = [j - i + 1] * minheight;
    max = Math.max(max, area);
  }
  return max;
};

/**
 * @param {number[]} height
 * @return {number}
 */
// 这种写法比较的好理解
var maxArea = function (height) {
  let left = 0;
  let right = height.length - 1;
  let max = 0;

  while (left < right) {
    // 先计算当前宽度（两指针之间的距离）
    const width = right - left;

    // 确定当前高度（取较短的垂直线）
    // 注意：此时不移动指针，仅比较当前值
    const currentHeight = Math.min(height[left], height[right]);

    // 计算当前面积并更新最大值
    max = Math.max(max, width * currentHeight);

    // 移动较短的垂直线指针（关键逻辑）
    if (height[left] < height[right]) {
      left++;
    } else {
      right--;
    }
  }

  return max;
};